iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
AI & Data

Power BI 資料分析與技術運用系列 第 4

D-04.Power BI 的M語言框架概述

  • 分享至 

  • xImage
  •  

以Power Query修改產出複雜商業需求前,先以M語言的互動方式產生大致上的框架可以帶來更多資料分析的變化性。

Mashup引擎是Microsoft提供針對各種服務提供解析與查詢的資料整合引擎,用以操作資料,故在選擇資料來源時,可以看到該引擎提供眾多異質服務,甚至是GitHub、Google Analytics等,用戶可以利用友善的Power Query Editor介面產生M語言,將符合需求的資料提供給Tabular模型。

相較以關聯式資料庫為主的ETL平台,M只提供查詢,不會再Tabular裡載入與更新資料來源。故不同於SQL Server Intsgration Services(SSIS),M不會對來源執行SQL語法,不會對目的執行SQL語法,不會呼叫API等等更新任何類型的目的地。

M語言所使用的語言相近於表格式模型(Tabular Model)採用的DAX(Data Analytsis Expressions) ,以層層函數呼叫來處理邏輯流程,而未有明確的class/struct、switch/if then else、for/while/foreach、try/catch區塊,處這一類的近似需求,可以建立副函數,但無法結構化地建立類別。

直接透過Power Query Editor介面建立空白查詢,可編寫包含:函數、參數、變數、運算式、值;在M語法的使用方式是用let做為執行開頭,in結尾。如下執行後可以得到一個資料行一筆紀錄的資料表。

let
in
"Hello World"

一般而言,M使用如下

let
變數名稱 = 運算式,
#"變數 名稱" =運算式2
in
變數名稱

規則有四:
1. M語言會區分大小寫
2. let關鍵字起始,加上查詢公式的步驟。步驟也是以變數開頭。變數使用特殊字元時,以雙引號包住且加上#宣告。
3. 多個變數間,以逗號分隔步驟並可以變數名稱參照。
4. in關鍵字做為結束並回傳,常用在回傳最後一句運算式的變數結果,可回傳任何一步驟執行結果,但非必要。

舉例:Hello和5table是兩個變數,以規定格式宣告 #"變數 名稱",Hello變數 以 Text.Upper函數處理"Hello World"字串,再以#table(欄位數, {{清單}})進行宣告。特別注意{清單}本身需要大括號。#table預設式以Column順序數字做為欄位名稱。
欄位名稱會被放入#"5table",以in關鍵字回傳變數結果。

let
Hello = Text.Upper("Hello World"),
#"5table" = #table(5, {{Hello}})
in
#"5table"

上一篇
D-03.用Power BI裡的Power Query進行資料整形
下一篇
D-05.M語言的函數
系列文
Power BI 資料分析與技術運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言